package com.huoyun.cargo.service;

import java.util.List;

import com.huoyun.base.bean.Page;
import com.huoyun.base.dao.evt.DaoBaseEvt;
import com.huoyun.cargo.bean.CargoInfo;
import com.huoyun.cargo.bean.CargoItem;
import com.huoyun.cargo.model.CargoUserCompanyModel;
import com.huoyun.cargo.service.evt.GetSimilarCargoByRouteEvt;

import com.huoyun.cargo.service.evt.GetCargoByCityEvt;
import com.huoyun.cargo.service.evt.GetCargosByUserIdEvt;
import com.huoyun.cargo.service.evt.QueryCargoEvt;

public interface CargoService {
	public long saveCargoInfo(CargoInfo cargoInfo);

	public boolean updateCargoInfo(CargoInfo cargoInfo);
	
	public void updateInvoice(long invoiceId,long cargoId);

	public CargoInfo getCargoInfo(CargoInfo cargoInfo);
	
	public Page getCargosByUserId(GetCargosByUserIdEvt getCargosByUserIdEvt);
	
	public Page getCargoByCity(GetCargoByCityEvt evt);
	
	public CargoInfo getCargoInfoById(long cargoId);
	
	public CargoInfo getCargoInfo(long userId, long cargoId);
	
   public List<CargoInfo> selectCargos(CargoInfo cargoInfo);
    
   /**
    * 根据条件搜索货源列表
    * @param searchCriteria
    * @return
    * @author ChengXin
    */
   public Page selectCargosForCar(com.huoyun.cargo.service.evt.SelectCargosForCarEvt searchCriteria);
   public List<CargoInfo> selectCargosByCondition(CargoInfo cargoInfo);
   public CargoItem getCargoItemByGoodsId(long goodsId);
   
   public void delete(long goodsId);
   /**
    * 获取注册货物数量
    * @param queryCargoEvt
    * @return
    */
   public long queryCargoCount(QueryCargoEvt queryCargoEvt);
   
	/**
	 * 相关货源查询
	 * @param getSimilarCargoByRouteEvt
	 * @return
	 */
	
	public Page getSimilarCargoByRoute(GetSimilarCargoByRouteEvt getSimilarCargoByRouteEvt);
	
	/**
	 * 更新货源查看次数
	 * @param viewCount
	 */
	
	public void updateViewCount(int viewCount, long cargoId);
	
	
	/**
	 * 查询最新的N条货物数据
	 * @param topN
	 * @return 
	 * @author yang
	 */
	public List<CargoUserCompanyModel> getLatestNCargo(long topN);
	
	/**
	 * 查询所有的货源信息
	 * @return
	 * @author ChengXin
	 */
	public Page getAllCargoItem(DaoBaseEvt daoBaseEvt);
}
